home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol025 / maze.bas < prev    next >
Encoding:
BASIC Source File  |  1987-01-11  |  1.5 KB  |  61 lines

  1. 1 CLS:KEY OFF
  2. 2 LOCATE 1,35:PRINT "MAZE":PRINT:PRINT
  3. 3 LPRINT TAB(35) "MAZE"
  4. 10 REM MAZE GENERATING PROGRAM
  5. 13 REM BY PAUL WENNBERG
  6. 100 DIM A(64,64),L2(500),D2(500)
  7. 110 INPUT "WHAT IS THE WIDTH OF THE MAZE? ";W:W=INT(W/2):PRINT:
  8. 120 INPUT "WHAT IS THE LENGTH OF THE MAZE? ";L:L=INT(L/2):PRINT
  9. 130 N=2*W+1:M=2*L+1
  10. 140 FOR I=2 TO N-1:FOR J=2 TO M-1:A(I,J)=0
  11. 145 NEXT J:NEXT I
  12. 150 FOR I=1 TO N:A(I,1)=1:A(I,M)=1:NEXT I
  13. 160 FOR I=1 TO M:A(1,I)=1:A(N,I)=1:NEXT I
  14. 170 NN=2*INT(RND(1)*(W-2))+3
  15. 180 MM=2*INT(RND(1)*(L-2))+3
  16. 190 A(NN,MM)=1:K=0
  17. 210 IF A(NN-2,MM)=0 THEN 320
  18. 220 IF A(NN+2,MM)=0 THEN 320
  19. 230 IF A(NN,MM-2)=0 THEN 320
  20. 240 IF A(NN,MM+2)=0 THEN 320
  21. 250 IF K-1=0 THEN 560
  22. 260 IF D2(K)=1 THEN NN=NN+L2(K)
  23. 270 IF D2(K)=2 THEN NN=NN-L2(K)
  24. 280 IF D2(K)=3 THEN MM=MM+L2(K)
  25. 290 IF D2(K)=4 THEN MM=MM-L2(K)
  26. 300 K=K-1
  27. 310 GOTO 210
  28. 320 L1=2*INT(RND(1)*3)+2
  29. 330 IF L1=8 THEN 320
  30. 340 D1=INT(RND(1)*4)+1
  31. 350 IF D1=5 THEN 340
  32. 360 IF D1>2 THEN 410
  33. 370 S=-1
  34. 380 IF D1=2 THEN S=1
  35. 390 T=0
  36. 400 GOTO 440
  37. 410 S=0
  38. 420 T=-1
  39. 430 IF D1=4 THEN T=1
  40. 440 FOR I=2 TO L1 STEP 2
  41. 450 IF A(NN+S*I,MM+T*I)=1 THEN 320
  42. 460 NEXT I
  43. 470 FOR I=1 TO L1
  44. 480 A(NN+S*I,MM+T*I)=1
  45. 490 NEXT I
  46. 500 NN=NN+S*L1
  47. 510 MM=MM+T*L1
  48. 520 K=K+1
  49. 530 L2(K)=L1
  50. 540 D2(K)=D1
  51. 550 GOTO 210
  52. 560 FOR I=1 TO M
  53. 570 FOR J=1 TO N
  54. 581 IF A(J,I)=1 THEN LPRINT "*";
  55. 591 IF A(J,I)=0 THEN LPRINT " ";
  56. 600 NEXT J:LPRINT:NEXT I:END
  57.  I=1 TO M
  58. 570 FOR J=1 TO N
  59. 581 IF A(J,I)=1 THEN LPRINT "*";
  60. 591 IF A(J,I)=0 THEN LPRINT " ";
  61. 600 NEXT J:LPRINT:NEXT I:EN